Ο τρόπος με τον οποίο γίνεται αυτό εξαποανέκαθεν είναι δημιουργώντας ξεχωριστά views ανά χρήστη ή κατηγορία χρηστών και δίνοντας δικαιώματα στα views αυτά. Η δημιουργία ενός view ανά χρήστη δεν είναι και ό,τι καλύτερο πάντως καθώς θα πρέπει να δημιουργήσεις πολλά views.
Μία άλλη λύση είναι να προσθέσεις ένα πεδίο με το username του χρήστη που έχει δικαίωμα και μετά να δημιουργήσεις ένα view το οποίο φιλτράρει τα αποτελέσματα με βάση το username του χρήστη και δίνοντας πρόσβαση στους εξωτερικούς χρήστες σε αυτό το view και μόνο (π.χ. χρησιμοποιώντας τις CURRENT_USER() ή SYSTEM_USER()).
Όπως και να έχει πάντως, δεν είναι και τόσο καλή λύση να δώσεις πρόσβαση στη βάση με ξεχωριστά login σε κάθε πελάτη. Καταρχήν, θα πρέπει να βεβαιωθείς ότι έχεις δώσει σωστά permissions σε όλους τους χρήστες, σε όλους τους πίνακες. Μετά, θα πρέπει να διαχειρίζεσαι τα logins είτε σε επίπεδο windows accounts είτε ως SQL Logins. Τέλος, θα πρέπει να "βγάλεις" τον SQL Server προς τα έξω για να μπορούν να τον δουν οι άλλοι χρήστες.
Αντί γι αυτό, είναι πολύ προτιμότερο και ευκολότερο να τροποποιήσεις την εφαρμογή σου έτσι ώστε να αναγνωρίζει διαφορετικούς χρήστες και να φιλτράρει τα δεδομένα που δείχνει με βάση το χρήστη. Το ASP.NET σου δίνει "από το κουτί" τη δυνατότητα να υποστηρίξεις πολλαπλούς χρήστες μέσω του ASP.NET Membership. Μετά, θα μπορείς να δείξεις διαφορετικές οθόνες ή να κάνεις διαφορετικά queries ανάλογα με το χρήστη που έχει κάνει login.
Σε κάθε περίπτωση θα πρέπει η εφαρμογή ή/και η βάση σου να έχουν σχεδιαστεί έχοντας υπόψη την ύπαρξη πολλών χρηστών. Διαφορετικά, θα χρειαστούν αρκετές αλλαγές στη βάση (ειδικά αν θέλεις να έχεις ξεχωριστά views ανά συνεργάτη) και στην εφαρμογή.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos